Virtualization techniques have been in practice for a long time in the development of hardware and software systems. Generally speaking, virtualization techniques aim to abstract underlying resources and to provide abstract interfaces. A virtual machine (VM) is a software emulation of a computer system. A VM typically functions as a computer system in which applications can be installed and used just as they can be installed in a conventional computer system. The VM is executed in a virtual machine runtime environment that provides an interface to mimic the hardware components such as memory, ports, storage, etc. In the recent years, the use of virtual machines have increased substantially primarily due to a wider adoption of cloud computing. Virtual machines can be used to provide a fluid and on-demand scalable computing infrastructure.
Among many others, a virtual machine provides a feature of making a point in time copy of the virtual machine in which a snapshot of the entire virtual computer is taken. This snapshot can be used to launch the virtual machine later. The snapshot is basically a computer file which when executed in the virtual machine runtime environment spawns a virtual machine in the state the virtual machine was when the snapshot was taken. In a computing environment, there may be a large number of virtual machine which may need to be backed up through the process of point in time snapshots at regular intervals.